//
//  main.m
//  C5_多维数组课后作业
//
//  Created by dllo on 15/10/12.
//  Copyright (c) 2015年 dllo. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    
//    1、（＊＊）有一个3行4列的二维数组，要求编程找出最大的元素，并输出所在的行和列。
    
//    int a[3][4] = {0};
//    int max = 0;
////    int m = 0, n = 0;
//    for (int i = 0; i < 3; i++) {
//        for (int j = 0 ; j < 4; j++) {
//            a[i][j] = arc4random() % (50 - 30 + 1) + 30;
//            printf("%d ", a[i][j]);
//        }
//        printf("\n");
//    }
//    for (int i = 0; i < 3; i++) {
//        for (int j = 0; j < 4; j++) {
//            if (max < a[i][j]) {
//                max = a[i][j];
////                m = i + 1;
////                n = j + 1;
//            }
//        }
//    }
////    printf("\n最大值为%d,在%d行%d列", max, m, n);
//    for (int i = 0; i < 3; i++) {
//        for (int j = 0; j < 4; j++) {
//            if (max == a[i][j]) {
//                printf("\n最大值%d在%d行%d列", max, i + 1, j + 1);
//            }
//        }
//    }
    
    
   
//    2、（＊＊）输入6个字符串，并对它们按从小到大的顺序排序后输出。
//    char a[6][12] = {"asdf", "qwer", "poiuy", "Iwefgd", "ioehfiueh", "BUIGBwoief"};
//    char temp[12] = {0};
//    for (int i = 0 ; i < 6 - 1; i++) {
//        for (int j = 0; j < 6 - i - 1; j++) {
//            if (strcmp(a[j], a[j + 1]) > 0) {
//                strcpy(temp, a[j]);
//                strcpy(a[j], a[j + 1]);
//                strcpy(a[j + 1], temp);
//            }
//        }
//    }
//    for (int i = 0; i < 6; i++) {
//        printf("%s\n",a[i]);
//    }
    
   
    
//    3、（＊＊＊＊）找出一个二维数组中的“鞍点”，即该位置上的元素在该行中最大，在该列中最小(也可能没有“鞍点”)，打印有关信息。（提示：注意特殊情况:没鞍点或多个鞍点）
//    
//    int a[3][4] = {0};
    int a[3][4] = {1, 5, 3, 1, 2, 6, 8, 8, 3, 7, 9, 7};
    int b[4][3] = {0};
    int max = 0;
    int min = 100;
    int m = 0;
    int x[4] = {0, 0, 0, 0};
    int y[4] = {0, 0, 0, 0};
//    for (int i = 0; i < 3; i++) {
//        for (int j = 0; j < 4; j++) {
//            a[i][j] = arc4random() % 99 + 1;
//            printf("%2d ", a[i][j]);
//        }
//        printf("\n");
//    }
    for (int i = 0; i < 4; i++) {
        for (int j = 0; j < 3; j++) {
            b[i][j] = a[j][i];
            printf("%2d ", b[i][j]);
        }
            printf("\n");
    }
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 4; j++) {
            if (max < a[i][j]) {
                max = a[i][j];
            }m = j;
        }

        if (max == b[m][i]) {
            printf("%d是鞍点", max);
        } else {
            printf("没有鞍点");
        }
    }
//            x[i] = a[i][j];
//        }
//    }
//    for (int i = 0; i < 4; i++) {
//        for (int j = 0; j < 3; j++) {
//            if (min > b[i][j]) {
//                min = b[i][j];
//            }
//            y[i] = b[i][j];
//        }
//    }
//    for (int i = 0; i < 4; i++) {
//        if (x[i] == y[i]) {
//            printf("%d是鞍点\n", x[i]);
//        } else {
//            printf("没有鞍点");
//        }
//    }
    
    
    
    
    
    
    
    
    
    
    
//    4、（＊＊）随机生成一个三维数组，编程求深度的平均值，保存在一个二维数组中（相当于一个模仿从上面看）。
//    
//    int a[3][4][5] = {0};
//    float b[3][4] = {0};
//    float sum = 0;
//    for (int i = 0; i < 3; i++) {
//        for (int j = 0; j < 4; j++) {
//            for (int k = 0; k < 5; k++) {
//                a[i][j][k] = arc4random() % (50 - 30 + 1) + 30;
//                printf("%d ",a[i][j][k]);
//            }
//            printf("\n");
//        }
//        printf("\n");
//    }
//    for (int i = 0; i < 3; i++) {
//        for (int j = 0; j < 4; j++) {
//            for (int k = 0; k < 5; k++) {
//                sum += a[i][j][k];
//            }
//            b[i][j] = sum / 5;
//            sum = 0;
//        }
//    }
//    for (int i = 0; i < 3; i++) {
//        for (int j = 0; j < 4; j++) {
//            printf("%.2f ", b[i][j]);
//        }
//        printf("\n");
//    }
    
    
    
    
    
    
    
    
    
    
    
    
}
